package ej1;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Vector;

public class EscribirLeer {
	
public EscribirLeer(){
	
}

//	Para escribir
void Escribir(Vector<Operario> v){
	
	File f = new File("C://ej1.txt");
	if (!f.exists()){
		try {
			f.createNewFile();
		} catch (IOException e) {
			System.out.println("No se pudo crear el archivo");
		}
	}
	try {
		OutputStream os = new FileOutputStream(f);
		DataOutputStream dos= new DataOutputStream(os);
		
		
		System.out.println(v.size());
		//ahora empiezo a grabar en el archivo
		
		for(int i=0;i<v.size();i++){
			if(v.elementAt(i).tipoOperario().equals("Permanente"))
				dos.writeInt(1);		
			else
				dos.writeInt(2);
			dos.writeChars(v.elementAt(i).getCodigo());
			dos.writeDouble(v.elementAt(i).getBasico());
			if(v.elementAt(i).tipoOperario().equals("Permanente"))
				dos.writeInt(((OperarioPermanente)v.elementAt(i)).getAnosAntiguedad());
			else
				dos.writeInt(((OperarioTemporal)v.elementAt(i)).getHorasTrabajadas());
				
		}
		dos.flush();//limpia el buffer
		dos.close();
		os.close();
	} catch (FileNotFoundException e) {
		System.out.println("El Archivo no se encontro");
	}catch (Exception e) {
		System.out.println("Error al intentar escribir archivo de datos...");
		
		e.printStackTrace();
	}
	
	
}
	
//Para Leer
void Leer(Vector<Operario> v){
	
	OperarioTemporal ot;
	OperarioPermanente op;
	int tipo;
	
	
	File f = new File("C:\\ej1.txt");
	if(f.exists()){
	try{
	
	InputStream is= new FileInputStream(f);
	DataInputStream dis=new DataInputStream(is);
	
	while(true){
		try{
			tipo = dis.readInt();
			if(tipo==1){
				ot = new OperarioTemporal();				
				ot.setCodigo(dis.readUTF());
				ot.setBasico(dis.readDouble());
				ot.setHorasTrabajadas(dis.readInt());
				v.add(ot);
			}else{
				op = new OperarioPermanente();
				op.setCodigo(dis.readUTF());
				op.setBasico(dis.readDouble());
				op.setAnosAntiguedad(dis.readInt());
				v.add(op);
			}
		}catch (EOFException e){
			break;
		}
		
		}		
	dis.close();
	is.close();
	
	
	}catch (Exception e) {
		System.out.println("Error al intentar leer archivo de datos...");
	}
	
	}


}




//Mostrar

public static void mostrarOperarios(Vector<Operario> ops){
	int i;
	for (i=0;i<ops.size();i++){
		System.out.print(ops.elementAt(i).getCodigo() + " | ");
		System.out.print(ops.elementAt(i).tipoOperario() + " | ");
		System.out.println(ops.elementAt(i).remuneracion());
	}
}

}	
